SRC = src
INC = include
OBJ = obj
BIN = bin
LIB = lib


SDL_DIR = ../SDL_aulas
GRAFICOS = ../graficos
CXX = g++
CPPFLAGS = -Wall -g -I$(SDL_DIR)/include -I$(GRAFICOS)/include -I$(INC) -c
LDFLAGS = -Llib -L$(GRAFICOS)/lib -L$(SDL_DIR)/lib  -ltetris -lgraficos -lSDL -lSDL_gfx -lSDL_ttf -lfreetype


# ************ Objetivos principales ************
all: $(BIN)/tetris	
# ************ Compilación de módulos ************

$(OBJ)/matriz.o : $(SRC)/matriz.cpp 
	$(CXX) $(CPPFLAGS) $(SRC)/matriz.cpp -o $(OBJ)/matriz.o	
$(OBJ)/imagen.o : $(SRC)/imagen.cpp 
	$(CXX) $(CPPFLAGS) $(SRC)/imagen.cpp -o $(OBJ)/imagen.o
$(OBJ)/color.o : $(SRC)/color.cpp 
	$(CXX) $(CPPFLAGS) $(SRC)/color.cpp -o $(OBJ)/color.o
$(OBJ)/pieza.o : $(SRC)/pieza.cpp
	$(CXX) $(CPPFLAGS) $(SRC)/pieza.cpp -o $(OBJ)/pieza.o
$(OBJ)/tablero.o : $(SRC)/tablero.cpp
	$(CXX) $(CPPFLAGS) $(SRC)/tablero.cpp -o $(OBJ)/tablero.o
$(OBJ)/acumulador.o : $(SRC)/acumulador.cpp
	$(CXX) $(CPPFLAGS) $(SRC)/acumulador.cpp -o $(OBJ)/acumulador.o

$(OBJ)/tetris.o: $(SRC)/tetris.cpp
	$(CXX) $(CPPFLAGS) $(SRC)/tetris.cpp -o $(OBJ)/tetris.o
$(OBJ)/vector_piezas.o: $(SRC)/vector_piezas.cpp  
	$(CXX) $(CPPFLAGS) $(SRC)/vector_piezas.cpp -o $(OBJ)/vector_piezas.o
$(OBJ)/cola_piezas.o: $(SRC)/cola_piezas.cpp   
	$(CXX) $(CPPFLAGS) $(SRC)/cola_piezas.cpp -o $(OBJ)/cola_piezas.o
$(OBJ)/marcador.o: $(SRC)/marcador.cpp 
	$(CXX) $(CPPFLAGS) $(SRC)/marcador.cpp -o $(OBJ)/marcador.o
$(OBJ)/interfaz.o: $(SRC)/interfaz.cpp
	$(CXX) $(CPPFLAGS) $(SRC)/interfaz.cpp -o $(OBJ)/interfaz.o	
# ************ Enlazado y creación de ejecutables ************	

$(BIN)/tetris: $(OBJ)/tetris.o $(LIB)/libtetris.a $(GRAFICOS)/$(LIB)/libgraficos.a 
	$(CXX) -o $(BIN)/tetris $(OBJ)/tetris.o $(LDFLAGS)

#************* Creacion de bibliotecas **********************
$(LIB)/libtetris.a :$(OBJ)/matriz.o $(OBJ)/imagen.o $(OBJ)/pieza.o $(OBJ)/color.o $(OBJ)/vector_piezas.o $(OBJ)/acumulador.o $(OBJ)/cola_piezas.o $(OBJ)/marcador.o $(OBJ)/interfaz.o
	ar rsv $(LIB)/libtetris.a $(OBJ)/matriz.o $(OBJ)/imagen.o  $(OBJ)/pieza.o $(OBJ)/color.o $(OBJ)/vector_piezas.o $(OBJ)/acumulador.o $(OBJ)/cola_piezas.o $(OBJ)/marcador.o $(OBJ)/interfaz.o

#***************** Documentacion ***********************
documentacion:
	doxygen doc/Doxyfile


# ************ Limpieza ************
clean :
	-rm -f $(OBJ)/* $(LIB)/* $(SRC)/*~ $(INC)/*~ ./*~
	
mrproper : clean
	-rm -f $(BIN)/* doc/html/*
